package com.huang.annotation_reflection;

public class reflection06 {
    public static void main(String[] args) throws ClassNotFoundException {
        //获取系统类加载器
        ClassLoader classLoader = ClassLoader.getSystemClassLoader();
        System.out.println(classLoader);

        //获取系统类加载器的父类加载器 --> 扩展类加载器
        ClassLoader parent = classLoader.getParent();
        System.out.println(parent);

        //无法扩展类加载器的父类 --> 引导类加载器

        //测试当前类是哪个加载器加载的（系统类加载器，也就是App加载器）
        ClassLoader classLoader1 = Class.forName("com.huang.annotation_reflection.reflection06").getClassLoader();
        System.out.println(classLoader1);

        //测试Object类是哪个加载器加载的(引导类加载器)
        classLoader = Class.forName("java.lang.Object").getClassLoader();
        System.out.println(classLoader);

        //如何获得系统类加载器可以加载的路径
        System.out.println(System.getProperty("java.class.path").replace(";",";\n"));

        //双亲委派机制
        //自定义一个包java.lang.string --> 先推系统类加载器是否有这个包，再往上推扩展加载器有没有这个包，最后是引导类加载器—
        //如果发现了同样名字的包，就不会使用自定义的包
    }
}

